SURFACE CIRCULATION IN THE WESTERN INDIAN OCEAN REGION FROM DRIFTERs:

A Case of the Pemba Channel

PhD Candidate: Masumbuko Semba

Invalid Date

Agenda

Part I–Theory, data & Results

  • Overview of ocean circulation
  • Data and Methods
  • Main Results

Part II–Application

  • Surface current on temperature and chlorophyll
  • Machine learning for surface current prediction
  • Coastal upwelling in the Pemba Channel

Synopsis

Chapter I
Introduction

The WIO Region

The WIO region is located

  • Latitude 30oS – 15oN

  • Longitude 25oE – 70oE

  • It has unique ocean circulation patterns

The Geomorphology

The four major geomorphology features are:

  • The Eastern African land mass
  • The Island of Madagascar
  • The Asian Continent
  • Mascarene Plateau

Seasonal Wind Patterns

  • Reversal trade winds creates northeast (NE) and southeast (SE) seasons
  • The NE1 begin in November through March
  • The SE2 begin in May through September
  • April and October are inter-monsoon3 months

Seasonal Wind Dynamics

Seasonal Wind Patterns ….

Seasonal surface current patterns

Statement of the Research Problem

Patterns of surface circulation in the WIO region was produced from;

  • compilation of ship drift report
  • model output
  • satellite altimetry data
  • Expeditions

Statement of the Research Problem

  • sparse of in-situ data, crude model output, and course satellite data provided course ocean circulation patterns
  • Unable to resolve areas in the region with limited data observations
  • Hence, this study used drifter observations to supplement the information gap

Objectives

The study used drifter data to estimate surface current in the the WIO region. The specific objectives are;

  1. Infer velocity of the surface currents in the WIO Region from drifter observation
  1. Compare surface current velocity patterns from drifters with other datasets
  1. Using machine learning to predict surface current velocities in the WIO region, and
  1. Assess the influence of surface current on sea surface temperature and chlorophyll-a in the WIO Region

Chapter II
Data and Methods

Drifters Data

  • Drifters are oceanographic instruments
  • Drifting with current pathways and used estimate current speed and direction
  • Obtained from NOAA

OSCAR Data

  • OSCAR provides estimates of ocean surface currents
  • Global oceans and is updated every five days
  • Obtained from NOAA

Wind Data

  • The wind used from ASCAT,
  • Satellite-based wind speed and direction.
  • Wind data are accessed from CERSAT-Ifremer

Geostrophic Current Data

  • Derivatives of sea level anomalies.
  • Large ocean circulation patterns
  • The data was accessed from AVISO4

Chlorophyll and SST Data

  • Chl-a and SST derived from MODIS5

Data Processing and Analysis

Velocity Computation

\[ \phi = \sqrt{(u^2 + v^2)} \]

Where: \(\phi\) = Estimated velocity; \(v^2\) = meridional velocity field; \(u^2\) = zonal velocity field

Kinetic Energy

\[ KE = \frac{1}{2} \times \rho [u^2+v^2] \]

Where: \(\phi\) = Estimated velocity; \(v^2\) = meridional velocity field; \(u^2\) = zonal velocity field

Eddy Kinetic Energy

\[ EKE =\frac{1}{2} \times \rho [(u - \bar u)^2+(v-\bar v)^2] \]

Where: \(\phi\) = Estimated velocity; \(v^2\) = meridional velocity field; \(u^2\) = zonal velocity field, \(\bar u\) and \(\bar v\) are zonal and meridional mean velocity

Gridding

  • Binning spatial points into regular grid cells
  • each cell containing a fixed number of points.
  • each cell contain summary of the points within

Upwelling

Access Data

Code
mur.monthly.sst = wior::get_sstMUR(
  lon.min = 38.5, lon.max = 41, 
  lat.min = -6.0, lat.max = -3.5,
  t1 = "2016-01-01", t2 = "2018-01-01", 
  level = 2
  )

sst.monthly = mur.monthly.sst %>% 
  filter(
    time > lubridate::dmy(010116) & 
      time < lubridate::dmy(010117) & 
      between(longitude, 38.8,40) & 
      between(latitude,-6,-4.1)
    ) %>% 
  mutate(
    miezi = lubridate::month(
      time, abbr = TRUE, label = TRUE)
    ) %>% 
  select(-c(mask, nobs))

Determine Index

Code
lat.unique = sst.monthly %>% 
  distinct(latitude) %>%  pull

month.unique = sst.monthly %>% 
  distinct(miezi) %>% pull() %>% 
  as.character()

sst.upwelling = list()
seq.miezi = seq(1000,12000,1000)

for (i in 1:length(lat.unique)){
  for (j in 1:length(month.unique)){
    
  
  sst.upwelling[[i+seq.miezi[j]]] = sst.monthly %>% 
    filter(
      latitude == lat.unique[i] &
        miezi == month.unique[j]
      ) %>% 
    mutate(
      sst.anomaly = sst - median(sst, na.rm = TRUE)
      )
  
  }
}

Machine learning

Random Forest

Code
library(tidymodels)

# Load the dataset
data(model.data)

# Split the data into training and testing sets
set.seed(123)
split <- initial_split(model.data, prop = 0.8, strata = "months")
train_data <- training(split)
test_data <- testing(split)

# Define the recipe for preprocessing the data
rf_recipe <- recipe(mpg ~ ., data = train_data) %>%
  step_normalize(all_predictors())

# Define the model specification
rf_spec <- rand_forest(
  mtry = tune(),
  trees = 500,
  min_n = 5
) %>%
  set_engine("ranger") %>%
  set_mode("regression")

# Define the workflow and tune the hyperparameters
rf_workflow <- workflow() %>%
  add_recipe(rf_recipe) %>%
  add_model(rf_spec)

rf_results <- rf_workflow %>%
  tune_grid(
    resamples = bootstraps(train_data, times = 5),
    grid = 10,
    metrics = metric_set(rmse, rsq),
    control = control_grid(verbose = TRUE)
  )

# Select the best model based on RMSE
best_rf <- rf_results %>%
  select_best("rmse")

# Evaluate the model on the testing set
rf_predictions <- predict(best_rf, test_data) %>%
  bind_cols(test_data) %>%
  metrics(truth = mpg, estimate = .pred)

# Print the RMSE and R-squared values
rf_predictions %>%
  select(.metric, .estimate) %>%
  pivot_wider()

Linear regression

Code
library(tidymodels)

# Load the dataset
data(model.data)

# Split the data into training and testing sets
set.seed(123)
split <- initial_split(model.data, prop = 0.8, strata = "months")
train_data <- training(split)
test_data <- testing(split)

# Define the recipe for preprocessing the data
lr_recipe <- recipe(mpg ~ ., data = train_data) %>%
  step_normalize(all_predictors())

# Define the model specification
lr_spec <- linear_reg() %>%
  set_engine("lm") %>%
  set_mode("regression")

# Define the workflow and fit the model
lr_workflow <- workflow() %>%
  add_recipe(lr_recipe) %>%
  add_model(lr_spec)

lr_fit <- lr_workflow %>%
  fit(train_data)

# Evaluate the model on the testing set
lr_predictions <- predict(lr_fit, test_data) %>%
  bind_cols(test_data) %>%
  metrics(truth = mpg, estimate = .pred)

# Print the RMSE and R-squared values
lr_predictions %>%
  select(.metric, .estimate) %>%
  pivot_wider()

Chapter III
Surface currents estimated from Drifter Observations

Introduction

The chapter presents key results of surface current inferred from the existing drifter data

  • in the Western Indian Ocean (WIO) region;
  • in the Pemba Channel; and
  • discuss some of the applications of drifter observations for surface circulation in the region.

Drifter in WIO Region

Density of drifters

  • Density vary in space
  • Areas with high and low Density

What is density of drifter along surface current pathways?

Seasonal Mean Velocity

Seaonal Major Currents ….

South Equatorial Current

Somali CUrrent

East Africa Coastal Current

Drifter in the Pemba Channel

Velocity in the Pemba Channel

Chapter IV
Surface currents on seasonal variation of temperature and chlorophyll

Chlorophyll and SST Data

The objective of this chapter was to explore the influence of surface current inferred from drifter’s observation on;

  • sea surface temperature, and
  • chlorophyll-a concentration
  • Relate influence of Drifter with OSCAR current pattern

Trend of drifters

  • Drifter in the Region data since 1980s
  • Continual deployment begun in 1994

Drifter Current on SST

Drifter Current on Chl-a

OSCAR current on SST

Longitudinal section of Temperature

Longitudinal section of Chl-a

Chapter V
Predicting Surface Current Velocities

Overview

  • Data scarse
  • Even drifter can not sample all areas
  • Model are used to supplement
  • Machine learning models used

Machine Learning Algorithm

Machine learning Algorithm …

Linear regression

Code
library(tidymodels)

# Load the dataset
data(model.data)

# Split the data into training and testing sets
set.seed(123)
split <- initial_split(model.data, prop = 0.8, strata = "months")
train_data <- training(split)
test_data <- testing(split)

# Define the recipe for preprocessing the data
lr_recipe <- recipe(mpg ~ ., data = train_data) %>%
  step_normalize(all_predictors())

# Define the model specification
lr_spec <- linear_reg() %>%
  set_engine("lm") %>%
  set_mode("regression")

# Define the workflow and fit the model
lr_workflow <- workflow() %>%
  add_recipe(lr_recipe) %>%
  add_model(lr_spec)

lr_fit <- lr_workflow %>%
  fit(train_data)

# Evaluate the model on the testing set
lr_predictions <- predict(lr_fit, test_data) %>%
  bind_cols(test_data) %>%
  metrics(truth = mpg, estimate = .pred)

# Print the RMSE and R-squared values
lr_predictions %>%
  select(.metric, .estimate) %>%
  pivot_wider()

Random Forest

Code
library(tidymodels)

# Load the dataset
data(model.data)

# Split the data into training and testing sets
set.seed(123)
split <- initial_split(model.data, prop = 0.8, strata = "months")
train_data <- training(split)
test_data <- testing(split)

# Define the recipe for preprocessing the data
rf_recipe <- recipe(mpg ~ ., data = train_data) %>%
  step_normalize(all_predictors())

# Define the model specification
rf_spec <- rand_forest(
  mtry = tune(),
  trees = 500,
  min_n = 5
) %>%
  set_engine("ranger") %>%
  set_mode("regression")

# Define the workflow and tune the hyperparameters
rf_workflow <- workflow() %>%
  add_recipe(rf_recipe) %>%
  add_model(rf_spec)

rf_results <- rf_workflow %>%
  tune_grid(
    resamples = bootstraps(train_data, times = 5),
    grid = 10,
    metrics = metric_set(rmse, rsq),
    control = control_grid(verbose = TRUE)
  )

# Select the best model based on RMSE
best_rf <- rf_results %>%
  select_best("rmse")

# Evaluate the model on the testing set
rf_predictions <- predict(best_rf, test_data) %>%
  bind_cols(test_data) %>%
  metrics(truth = mpg, estimate = .pred)

# Print the RMSE and R-squared values
rf_predictions %>%
  select(.metric, .estimate) %>%
  pivot_wider()

The Good Model Algorithm

Monthly Predicted velocities

Seaponal Predicted velocities

Chapter VI
Coastal upwelling and Pelagic fishery in the Pemba Channel

Coastal Upwelling

  • The Pemba Channel experience Coastal upwelling
  • bring nutrient rich water to the surface
  • Support the growth of plankton
  • Increase primary productivity and fisheries

Objective

The objective of this chapter were to determine;

  • timing of coastal upwelling areas in the Pemba Channel.
  • size of coastal upwelling areas in the Pemba Channel.
  • the influence of coastal upwelling on fisheries.

Upwelling in Pemba Channel

  • The upwelling is localized on the western side
  • It occurs during the NE) monsoon season
  • The NE season wind blow from northeast
  • the EACC flow northward and SC flows southward
  • Convergence of SC and EAC

Wind speed and direction

  • The trade winds dominancy
  • north-easterly during NE
  • south-easterly during SE

Current speed and direction

  • the East African Coastal Current
  • The flow is northward
  • speeds of 0.77 m/s during the SE
  • speed of 0.68 m/s during NE

Sea surface temperature & wind

  • Temperature phase – warm and cold
  • Both satellite (top) and insitu (middle)
  • The first 60 days inter-twin with warm and cool surface water
  • Strong wind spells and weakened current lead to upwelling

Modulation of SST

Figure 1: Upwelling events in the Pemba Channel for a) a longer period 2010 to 2020 and b) a shorter period between September 2017 and July 2020

River Discharge

  • The daily mean discharge vary with seasons
  • peak volume of 130 m3s-1 on day 120 (April),
  • Coincide with the NE monsoon

Spatial variation

  • Upwelling is recurring phenomenon
  • occur from December to February
  • upwelling front of 10 to 20 km
  • Spread at boundary of KE & TZ

Upwelling Events

SST monthly variation

SST Season Spatial variation

  • Temperature vary by season
  • Warm in NE and Cool in SE
  • The INT lies in between warm and cool

Upwelling Months SST

  • Upwelling occurs during the NE Season
  • More pronounced in Dec, Jan and Feb
  • The peak is mostly January

Upwelling Index

  • January the upwelling areas on the western side
  • Aug the index is on the eastern side
  • The western is more pronounced

Upwelling Index —-

  • The upwelling area is determined
  • The size vary by extent
  • Upwelling events more in January

Hotspot of effort and catch

Hotspot of catch rates ….

Synopsis — Summary, conclusion and recommendations

Footnotes

  1. winds blow from Indian subcontinent towards the tropical south-western Indian Ocean

  2. reversed trade winds blow generally from tropical western Indian Ocean toward the Indian subcontinent

  3. refers to the period of time between the end of one monsoon season and the beginning of the next.

  4. http://www.aviso.oceanobs.com/duacs/

  5. Moderate Resolution Imaging Spectroradiometer